Software processes executing on a computing device use device state information to perform various functions on the computing device. An operating system process on the computing device can use battery charge state information to warn the user about a potential power failure. A location-based application can use location state information to determine when to present information for a nearby business. A music application can determine how to output sound based on state information that describes the type of speaker, headphones, or other sound-producing device connected to the computing device. To obtain this device state information, the software processes (e.g., operating system, application, utility, etc.) must be configured (e.g., programmed) to access various application programming interfaces (APIs) to access various different sources of device state information. To detect changes in device state, the software systems must be programmed to periodically obtain updated device state information and analyze the device state information for changes in device state. The programmers of these software systems are often burdened with learning many different APIs to obtain the device state information needed by the software systems. Additionally, the programmers must write the code to periodically check the state of the system components. Moreover, the various software systems waste processing time and resources by duplicating the code needed to periodically check and detect changes in device state.